<?php


namespace app\controller;


use app\BaseController;
use app\middleware\Check;
use app\model\FinanceModel;
use think\facade\Validate;
use think\Request;
use think\validate\ValidateRule;
use \think\response\Json;
/**财务员管理
 * Class Finance
 * @package app\controller
 */
class Finance extends BaseController
{
    protected $middleware = [Check::class];

    /**财务员列表
     * @param Request $request
     * @return Json
     */
    public function list(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        // 接收参数
        $input['limit'] = $request->post('limit'); // 每页限制数量
        $input['page'] = $request->post('page');// 当前页
        $input['name'] = $request->post('name'); // 财务名称
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::list($input, $request->post('token'));
    }

    /**添加财务
     * @param Request $request
     * @return Json
     */
    public function add(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['account'] = $request->post('account');//用户名
        $input['pwd'] = $request->post('pwd');//密码
        $input['repwd'] = $request->post('repwd');//repwd
        $input['phone'] = $request->post('phone');//手机号码
        $input['name'] = $request->post('name'); // 名字
        // 参数校验
        $validate = Validate::rule([
            'account' => ValidateRule::isRequire(null, '缺少参数'),
            'pwd' => ValidateRule::isRequire(null, '缺少参数'),
            'repwd' => function ($value, $all) {
                return $value === $all['pwd'] ? true : '两次密码输入不一致';
            },
            'phone' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::add($input, $request->post('token'));
    }

    /**删除财务
     * @param Request $request
     * @return Json
     */
    public function delete(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//财务id
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::delete($input, $request->post('token'));
    }

    /**获取单个信息
     * @param Request $request
     * @return Json
     */
    public function only(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//财务id
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::only($input, $request->post('token'));
    }

    /**编辑财务
     * @param Request $request
     * @return Json
     */
    public function edit(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//财务id
        $input['account'] = $request->post('account');//财务账号
        $input['name'] = $request->post('name');//财务名称
        $input['phone'] = $request->post('phone');//财务电话
        $input['status'] = $request->post('status');//财务状态
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'account' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
            'phone' => ValidateRule::isRequire(null, '缺少参数'),
            'status' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::edit($input, $request->post('token'));
    }

    /**修改密码
     * @param Request $request
     * @return Json
     */
    public function changePwd(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//财务id
        $input['pwd'] = $request->post('pwd');//财务密码
        $input['chkpwd'] = $request->post('chkpwd');//财务再次密码
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'pwd' => ValidateRule::isRequire(null, '缺少参数'),
            'chkpwd' => function ($value, $all) {
                return $value === $all['pwd'] ? true : '两次密码输入不一致';
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return FinanceModel::changePwd($input, $request->post('token'));
    }
}